package org.mendoza.salud.hvt.client.local.gui.geo;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.user.client.ui.Composite;
import org.gwtbootstrap3.client.ui.Button;
import org.gwtbootstrap3.client.ui.IntegerBox;
import org.gwtbootstrap3.client.ui.TextBox;
import org.jboss.errai.common.client.api.Caller;
import org.jboss.errai.common.client.api.RemoteCallback;
import org.jboss.errai.databinding.client.api.DataBinder;
import org.jboss.errai.ui.shared.api.annotations.*;
import org.mendoza.salud.hvt.client.shared.model.global.Pais;
import org.mendoza.salud.hvt.client.shared.services.GeoServiceRemote;

import javax.annotation.PostConstruct;
import javax.inject.Inject;


@Templated("PaisEdit.html#editor")
public class PaisEdit extends Composite {
    enum Modo {CREAR, EDITAR}

    private Modo modo;

    @Inject
    Caller<GeoServiceRemote> geoServiceRemoteCaller;

    @Inject
    @AutoBound
    DataBinder<Pais> paisModel;

    @Inject
    @DataField("nombre")
    @Bound
    TextBox nombre;
    @Inject
    @DataField("codigo3")
    @Bound(property = "codigoAlfa3")
    TextBox codigo3;
    @Inject
    @DataField("codigo2")
    @Bound(property = "codigoAlfa2")
    TextBox codigo2;
    @Inject
    @DataField("codigoNumerico")
    @Bound(property = "codigoNumerico")
    IntegerBox codigoNumerico;
    @Inject
    @DataField("editar")
    Button button;

    @PostConstruct
    public void init() {
        codigo2.setMaxLength(2);
        codigo3.setMaxLength(3);
        if (modo == null) modo = Modo.CREAR;
        button.setText("OK grabalo makina");
    }

    @EventHandler("editar")
    public void editarEvent(ClickEvent event) {
        Pais pais = paisModel.getModel();
        geoServiceRemoteCaller.call(new RemoteCallback<Pais>() {
            @Override
            public void callback(Pais pais1) {
                setPais(new Pais());
            }
        }).mergePais(pais);
    }

    public void setModo(Modo modo) {
        this.modo = modo;
    }

    private void configModo() {
        if (modo == Modo.CREAR) {
            button.setText("CREAR");
        } else if(modo== Modo.EDITAR) {
            button.setText("MODIFICAR");
        }
    }

    public void setPais(Pais pais) {
        paisModel.setModel(pais);
    }
}
